/*
 * Copyright (c) 2006 Mikhail V. Denisenko.
 * All rights reserved.
 *
 * Module for representing Object data in memory. Which is the box with
 * geometrical and surface information.
 *
 * $Id$
 */

#ifndef ObjectH
#define ObjectH


#include "Polygon.h"
#include "primitives.hpp"


class Object
{
public:
	Object();
	~Object();

	void Transform(const Matrix4 & matrix);
private:
	std::vector<Polygon *> _polygons;
friend class ObjectBuilder;
};


class ObjectBuilder
{
private:
	std::auto_ptr<Object> _result;
public:
	void Begin();
	void AddPolygon(Polygon * polygon);
	Object * Grab();
};


#endif // ObjectH
